#!/usr/bin/env node
const path = require('path')
const { writeFileSync, unlinkSync } = require('fs')

// 测试配置加载
async function testConfig() {
  console.log('=== 开始配置系统测试 ===')

  // 1. 测试必需字段验证
  try {
    process.env = {}
    require('../src/core/config')
    console.error('❌ 必需字段测试失败：未捕获缺失字段错误')
  } catch (e) {
    console.log('✅ 必需字段测试通过')
  }

  // 2. 测试类型转换
  try {
    process.env = {
      APP_NAME: 'TestApp',
      API_BASE_URL: 'http://test.com',
      API_TIMEOUT: '5000',
      FEATURE_PAYMENT: 'true'
    }
    const config = require('../src/core/config')
    
    if (config.api.timeout === 5000 && 
        config.features.payment === true) {
      console.log('✅ 类型转换测试通过')
    } else {
      console.error('❌ 类型转换测试失败')
    }
  } catch (e) {
    console.error('❌ 类型转换测试失败：', e.message)
  }

  // 3. 测试环境文件加载
  try {
    const testEnvPath = path.join(__dirname, '../.env.test')
    writeFileSync(testEnvPath, 'APP_NAME=EnvTest\nAPI_BASE_URL=test.com')
    
    process.env.NODE_ENV = 'test'
    const config = require('../src/core/config')
    
    if (config.app.name === 'EnvTest') {
      console.log('✅ 环境文件加载测试通过')
    } else {
      console.error('❌ 环境文件加载测试失败')
    }
    
    unlinkSync(testEnvPath)
  } catch (e) {
    console.error('❌ 环境文件加载测试失败：', e.message)
  }

  console.log('=== 测试完成 ===')
}

testConfig()